Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data, ideas and trends in most areas of business, science, education and entertainment. Electronic systems designed to provide these benefits often include integrated circuits on a single substrate that provide a variety advantages (e.g., such as miniaturization, fast processing of signals, minimal power consumption, etc.) over discrete component circuits. However, traditional approaches to manufacturing and designing single-chip systems are often very complex and consume significant resources.
Electronic systems rely upon a variety of components included in integrated circuits to provide numerous functions. Microcontrollers are one example of integrated circuit components with characteristics that are potentially useful in a variety of applications. For example, microcontrollers are typically reliable and relatively economical to produce. Microcontrollers have evolved since they were first introduced and have substantially replaced mechanical and electromechanical components in numerous applications and devices. However, while traditional mircontrollers have some characteristics that are advantageous they also tend to be limited in the number of applications in which any given microcontroller can be utilized.
Traditionally each microcontroller was custom designed precisely for a narrow range of applications with a fixed combination of required peripheral functionalities. Developing custom microcontroller designs with particular fixed peripherals is time and resource intensive, typically requiring separate and dedicated manufacturing operations for each different microcontroller (which is particularly expensive for small volume batches). Even if a microcontroller may suffice for more than one application, it is still difficult to select an appropriate microcontroller for a particular application. Determining which one of the different available particular microcontroller designs is best suited for a particular application is challenging. In addition, the unique aspects of the intended application often make it difficult to find an optimum microcontroller, usually necessitating a compromise between the convenience of using an existing microcontroller design and less than optimum performance. Even when a suitable microcontroller is found, subsequent changes to the application and new requirements placed on the application can lead to the need for a totally different microcontroller.
Application specific integrated circuits (ASICs) may appear to address some of the issues associated with finding a suitable microcontroller for a particular application, but they tend to present significant hurdles. ASICs can be problematic because they tend to require a sophisticated amount of design expertise and the obstacles of long development times, high costs, and large volume requirements still remain. Prior attempts at providing limited flexibility by the use of gate arrays and or other logic components are very expensive and require a sophisticated level of design expertise. Even after determining what functions and configurations is desirable, additional significant resources are necessary in systems requiring software code for the performance of appropriate functions.
Numerous electronic devices require some type of boot sequence to begin operations. Some traditional integrated circuit designs required the generation of programmed boot code that directs the sequence of boot operations performed by components included in the integrated circuit. Traditionally the programmed boot code is manually written by an application programmer, requiring the programmer to have knowledge of all the components and the numerous logical values (such as a bit stream) that direct a component to perform desired functions. Furthermore, different boot configurations and functions typically result in interrupts to different vectors and tracking the corresponding interrupt vector is very difficult and often susceptible to erroneous coding.
What is required is a system and method of facilitating automatic generation of the boot sequence instructions in a convenient and efficient manner.